home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / minix / up1510b.tgz / up1510b / src / commands / nroff / nroff.h < prev    next >
C/C++ Source or Header  |  1990-07-23  |  16KB  |  581 lines

  1. #ifndef NRO_H
  2. #define NRO_H
  3.  
  4. #include "config.h"            /* os/compiler options */
  5.  
  6. /*
  7.  *    nroff.h - stuff for nroff
  8.  *
  9.  *    adapted for atariST/TOS by Bill Rosenkranz 10/89
  10.  *    net:    rosenkra@hall.cray.com
  11.  *    CIS:    71460,17
  12.  *    GENIE:    W.ROSENKRANZ
  13.  *
  14.  *    things to look for here:
  15.  *    1) TMAC definition for default macro package lib
  16.  *    2) configuration sizes (see _STKSIZ below if alcyon/dri)
  17.  *    3) libc should have getenv(), time(), and ctime()
  18.  *    4) look in version.h for *printer file name (included below)
  19.  *
  20.  *    all data is currently allocated in static arrays. the biggest
  21.  *    chunks are the parameters which control number registers and the
  22.  *    macro name space area. these are defined below: MAXREGS, MACBUF.
  23.  *    MACBUF is the larger. it holds all macros, strings, etc. if you
  24.  *    find yourself running out of macro space, increase MACBUF.
  25.  *
  26.  *    original author:
  27.  *
  28.  *    Stephen L. Browning
  29.  *    5723 North Parker Avenue
  30.  *    Indianapolis, Indiana 46220
  31.  *
  32.  *    history:
  33.  *
  34.  *    - Originally written in BDS C;
  35.  *    - Adapted for standard C by W. N. Paul
  36.  *    - Heavily hacked up to conform to "real" nroff by Bill Rosenkranz
  37.  */
  38.  
  39. #include <ctype.h>
  40.  
  41. #ifdef _MINIX
  42. # ifdef tolower
  43. #  undef tolower
  44. # endif
  45. # define tolower(x) (isupper(x)?((x)-'A'+'a'):(x))
  46. #endif
  47. #ifdef UNIX
  48. # ifdef tolower
  49. #  undef tolower
  50. # endif
  51. # define tolower(x) (isupper(x)?((x)-'A'+'a'):(x))
  52. #endif
  53.  
  54. /*
  55.  *    default prefix of macro files. files will be of the form "tmac.an"
  56.  *    (for -man), "tmac.s" (for -ms), "tmac.e" (for -me), etc. first
  57.  *    checks environment for TMACDIR which would be path (e.g. "c:\lib\tmac"
  58.  *    or ".", no trailing slash char!).
  59.  */
  60. #ifdef tmacfull
  61. # define TMACFULL    tmacfull
  62. #endif
  63. #ifdef tmacpre
  64. # define TMACPRE    tmacpre
  65. #endif
  66.  
  67. #ifdef GEMDOS
  68. # ifndef TMACFULL
  69. #  define TMACFULL    "c:\\lib\\tmac\\tmac."
  70. # endif
  71. # ifndef TMACPRE
  72. #  define TMACPRE    "\\tmac."
  73. # endif
  74. #endif
  75.  
  76. #ifdef _MINIX
  77. # ifndef TMACFULL
  78. #  define TMACFULL    "/usr/lib/tmac/tmac."
  79. # endif
  80. # ifndef TMACPRE
  81. #  define TMACPRE    "/tmac."
  82. # endif
  83. #endif
  84.  
  85. #ifdef UNIX
  86. # ifndef TMACFULL
  87. #  define TMACFULL    "/usr/lib/tmac/tmac."
  88. # endif
  89. # ifndef TMACPRE
  90. #  define TMACPRE    "/tmac."
  91. # endif
  92. #endif
  93.  
  94. /*
  95.  *    command codes. indented defines are commands not yet implemented
  96.  */
  97. #undef PI
  98. #define MACRO        0    /* macro definition */
  99. #define BP         1    /* begin page */
  100. #define BR         2    /* break */
  101. #define CE         3    /* center */
  102. #define FI         4    /* fill    */
  103. #define FO         5    /* footer */
  104. #define HE         6    /* header */
  105. #define IN         7    /* indent */
  106. #define LS         8    /* line spacing    */
  107. #define NF         9    /* no fill */
  108. #define PL        10    /* page length */
  109. #define RM        11    /* remove macro */
  110. #define SP        12    /* line space */
  111. #define TI        13    /* temp indent */
  112. #define UL        14    /* underline */
  113. #define JU        15    /* justify */
  114. #define NJ        16    /* no justify */
  115. #define M1        17    /* top margin */
  116. #define M2        18    /* second top margin */
  117. #define M3        19    /* first bottom margin */
  118. #define M4        20    /* bottom-most margin */
  119. #define BS        21    /* allow/disallow '\b' in output */
  120. #define NE        22    /* need n lines */
  121. #define PC        23    /* page number character (%) */
  122. #define CC        24    /* control character (.) */
  123. #define PO        25    /* page offset */
  124. #define BO        26    /* bold face */
  125. #define EH        27    /* header for even numbered pages */
  126. #define OH        28    /* header for odd numbered pages */
  127. #define EF        29    /* footer for even numbered pages */
  128. #define OF        30    /* footer for odd numbered pages */
  129. #define SO        31    /* source file */
  130. #define CU        32    /* continuous underline    */
  131. #define DE        33    /* define macro    */
  132. #define EN        34    /* end macro definition    */
  133. #define NR        35    /* set number register */
  134. #define EC        36    /* escape character (\) */
  135. #define FT        37    /* font change (R,B,I,S,P) */
  136. #define EO        38    /* turn escape parsing off */
  137. #define LL        39    /* line length (same as RM) */
  138. #define FL        40    /* flush output NOW */
  139. #define PN        41    /* page number for next page */
  140. #define RR        42    /* remove register */
  141. #define C2        43    /* nobreak char */
  142. #  define TR        44    /* translate character */
  143. #  define LT        45    /* length of title */
  144. #  define FC        46    /* field delimeter */
  145. #define TL        47    /* like HE */
  146. #define AF        48    /* assign format to nr */
  147. #define AD        49    /* adjust line */
  148. #define NA        50    /* no adjust */
  149. #define DS        51    /* define string */
  150. #define PM        52    /* print macro names */
  151. #define IF        53    /* if */
  152. #define IE        54    /* if/else */
  153. #define EL        55    /* else */
  154. #define PS        56    /* point size (IGNORED in nroff) */
  155. #define SS        57    /* space char size (IGNORED in nroff) */
  156. #define CS        58    /* constant char space (IGNORED in nroff) */
  157. #define BD        59    /* embolden font (IGNORED in nroff) */
  158. #  define FP        60    /* font position */
  159. #  define MK        61    /* mark vertical place */
  160. #  define RT        62    /* return to marked vert place */
  161. #  define VS        63    /* vertical baseline spacing */
  162. #  define SV        64    /* save vertical distance */
  163. #  define OS        65    /* output saved vertical distance */
  164. #  define NS        66    /* no-space mode */
  165. #  define RS        67    /* restore spacing mode */
  166. #  define AM        68    /* append to macro */
  167. #  define AS        69    /* append to string */
  168. #  define RN        70    /* rename */
  169. #  define DI        71    /* divert to macro */
  170. #  define DA        72    /* divert/append to macro */
  171. #  define WH        73    /* set location trap */
  172. #  define CH        74    /* change trap location */
  173. #  define DT        75    /* set diversion trap */
  174. #  define IT        76    /* set input line trap */
  175. #  define EM        77    /* end macro */
  176. #  define TA        78    /* tab settings */
  177. #  define TC        79    /* tab repetition char */
  178. #  define LC        80    /* leader repetition char */
  179. #  define LG        81    /* ligature mode */
  180. #  define UF        82    /* underline font */
  181. #  define NH        83    /* no hyphenation */
  182. #  define HY        84    /* hyphenate */
  183. #  define HC        85    /* hyphenation indication char */
  184. #  define HW        86    /* hyphenation exception words */
  185. #  define NM        87    /* number mode */
  186. #  define NN        88    /* no number next lines */
  187. #  define EV        89    /* environment switch */
  188. #  define RD        90    /* read insertion */
  189. #  define EX        91    /* exit */
  190. #  define NX        92    /* next file */
  191. #  define PI        93    /* pipe to program */
  192. #  define MC        94    /* set margin char */
  193. #  define TM        95    /* print to terminal */
  194. #define IG        96    /* ignore */
  195.  
  196. #define COMMENT        1000    /* comment (.\") */
  197. #define UNKNOWN        -1
  198.  
  199.  
  200. /*
  201.  *    MAXLINE is set to a value slightly larger than twice the longest
  202.  *    expected input line. Because of the way underlining is handled, the
  203.  *    input line which is to be underlined, can almost triple in length.
  204.  *    Unlike normal underlining and boldfacing, continuous underlining
  205.  *    affects all characters in the buffer, and represents the worst case
  206.  *    condition.  If the distance between the left margin and the right
  207.  *    margin is greater than about 65 characters, and continuous underlining
  208.  *    is in effect, there is a high probability of buffer overflow.
  209.  */
  210. #define MAXLINE        200
  211. #define PAGELEN         66
  212. #define PAGEWIDTH     80
  213. #define HUGE        256
  214. #define INFINITE    32760
  215. #define LEFT        0    /* indecies into hdr margin lim arrays */
  216. #define RIGHT        1
  217. #define Nfiles        4    /* nesting depth for input files */
  218.  
  219. /*
  220.  *    The following parameters may be defined elsewhere so undef/def
  221.  */
  222. #undef min
  223. #undef max
  224. #undef YES
  225. #define YES        1
  226. #undef NO
  227. #define NO        0
  228. #undef ERR
  229. #define ERR        -1
  230. #define EOS         '\0'
  231. #undef FALSE
  232. #define FALSE         0
  233. #undef TRUE
  234. #define TRUE         !FALSE
  235. #undef OK
  236. #define OK         !ERR
  237.  
  238. /*
  239.  *    a rational way of dealing with the NULL thing...
  240.  */
  241. #define NULL_CPTR    (char *) 0
  242. #define NULL_FPTR    (FILE *) 0
  243. #define NULL_IPTR    (int *) 0
  244. #define NULL_LPTR    (long *) 0
  245. #define NULL_SPTR    (short *) 0
  246. #define NULL_PTR    (char *) 0
  247. #define NULLP(type)    (type *) 0
  248.  
  249.  
  250. /*
  251.  *    for justification during line fill
  252.  */
  253. #define ADJ_OFF        0
  254. #define ADJ_LEFT    1
  255. #define ADJ_RIGHT    2
  256. #define ADJ_CENTER    3
  257. #define ADJ_BOTH    4
  258.  
  259.  
  260. /*
  261.  *    basic unit (b.u.) conversions. in nroff, all output is fixed spaced,
  262.  *    at least in THIS nroff. so unit conversion to b.u. amount to 1 Em per
  263.  *    character or 24 b.u. per character. thus 0.5i = 120 b.u. = 5 chars.
  264.  *    everything is rounded up to the nearest Em. it is highly recommended
  265.  *    to use inches for everything...
  266.  *
  267.  *    to convert (say inches) to char spaces, do this:
  268.  *
  269.  *        char_spaces = (int)(inches * (float) BU_INCH) / BU_EM;
  270.  */
  271. #define BU_INCH        240        /* 1.0i = 240 b.u. */
  272. #define BU_CM        945/10        /* 1.0c = 240*50/127 b.u. */
  273. #define BU_PICA        40        /* 1P   = 240/6 b.u. */
  274. #define BU_EM        24        /* 1m   = 240/10 b.u. (10 char/inch) */
  275. #de